package presentation;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import metier.IndicateurCalculeMetier;
import metier.IndicateurMetier;
import modele.Administrateur;
import modele.Annee;
import modele.Emplacement;
import modele.Indicateur;
import modele.Indicateur_calcule;
import modele.Indicateur_qualitatif;
import modele.Theme;
import modele.Valeur;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class IndicateurAction extends ActionSupport {

	private static final long serialVersionUID = 7608206044887440915L;
	public long identifiant;
	private int annee;
	private String libelle;
	private ArrayList<Indicateur> listeIndicateurs;
	private long identifiantTheme;
	private ArrayList<Indicateur_qualitatif> listeIndicateursQualitatif;
	private Theme tem;
	private long idemplacement;
	private String valeur;
	private String emplacement;
	private Administrateur administrateur;
	private String niveau_base;
	private Boolean type;
	private ArrayList<Indicateur_calcule> listeIndicateursCalcule;
	private List<Emplacement> listeEmplacments;
	private Valeur val;
	private List<Valeur> listeValeurs;
	private long identifiantIndicateur;
	private long identifiantEmplacement;
	private Annee a;


	public String listeIndicateurs() {

		// long idAdmin = (long) ServletActionContext.getRequest().getSession()
		// .getAttribute("identifiant");

		listeIndicateurs = (ArrayList<Indicateur>) IndicateurMetier
				.getListeIndicateursTheme(identifiantTheme);

		ServletActionContext.getRequest().getSession()
				.setAttribute("derniereListeIndic", listeIndicateurs);

		return SUCCESS;

	}

	public String modifierIndicateur() {

		Indicateur_qualitatif indicateur = new Indicateur_qualitatif(libelle);
		
		indicateur.setIdentifiant(identifiant);
	
		if (IndicateurMetier.modifierIndicateurQualitatif(indicateur)) {
			listeIndicateursQualitatif();
			return SUCCESS;
		} else
			return ERROR;

	}
	public String listeIndicateursQualitatif() {

	
		listeIndicateursQualitatif = (ArrayList<Indicateur_qualitatif>) IndicateurCalculeMetier
				.getListeIndicateursQualitatifTheme(identifiantTheme);

		ServletActionContext
				.getRequest()
				.getSession()
				.setAttribute("derniereListeIndic",
						listeIndicateursQualitatif);
		System.out.println("mazrara999999");

		return SUCCESS;

	}
	public String supprimerIndicateur() {
		IndicateurMetier.supprimerIndicateur(identifiant);
		addActionMessage("Indicateur supprime");

		return getDerniereListeIndicateur();
	}

	public String supprimerIndicateurTheme() {
		IndicateurMetier.supprimerIndicateurTheme(identifiant);
		addActionMessage("Indicateur supprime");

		return getDerniereListeIndicateur();
	}

	public String ajouterIndicateur() {
		Indicateur indicateur = new Indicateur(libelle);
		long idAdmin = (long) ServletActionContext.getRequest().getSession()
				.getAttribute("identifiant");
		Administrateur admin = IndicateurMetier.getAdministrateur(idAdmin);
		indicateur.setAdministrateur(admin);

		Theme tem = IndicateurMetier.getTheme(identifiantTheme);
		indicateur.setTheme(tem);

		System.out.println(identifiantTheme);
		System.out.println(identifiantTheme);
		System.out.println(identifiantTheme);
		System.out.println("uyftufdryctfuvguv");
		// System.out.println(tem.getDescription());

		if (IndicateurMetier.ajouterIndicateur(indicateur))
			return SUCCESS;
		else
			return ERROR;

	}

	public String ajouterIndicateurChoix() {
		return "";
	}

	public String afficherValeurIndicateurCalcule() {
		return "";
	}
	public String supprimerIndicateurQualitatif() {
		IndicateurMetier.supprimerIndicateur(identifiant);
		addActionMessage("Indicateur supprime");

		return listeIndicateursQualitatif();
	}
	public String rechercherIndicateur() {
		HttpSession session = ServletActionContext.getRequest().getSession();

		session.setAttribute("libelle", libelle);

		Indicateur indicateur = new Indicateur(libelle);
		Administrateur admin = new Administrateur();
		admin.setIdentifiant((long) session.getAttribute("identifiantTheme"));
		indicateur.setAdministrateur(admin);

		listeIndicateurs = IndicateurMetier.rechercherIndicateurs(indicateur);

		return SUCCESS;
	}

	public String getDerniereListeIndicateur() {
		HttpSession session = ServletActionContext.getRequest().getSession();
		listeIndicateurs = (ArrayList<Indicateur>) session
				.getAttribute("derniereListeIndic");
		return SUCCESS;
	}

	// public String getDerniereListeIndicateur() {
	// HttpSession session = ServletActionContext.getRequest().getSession();
	// if
	// ("listeRecherche".equals(session.getAttribute("derniereListeIndicateur")))
	// return "listeRecherche";
	// else
	// return "listeIndicateurs";
	// }

	public String getlibelle() {
		return libelle;
	}

	public void setlibelle(String libelle) {
		this.libelle = libelle;
	}

	public ArrayList<Indicateur> getlisteIndicateurs() {
		return listeIndicateurs;
	}

	public void setlisteIndicateurs(ArrayList<Indicateur> listeIndicateurs) {
		this.listeIndicateurs = listeIndicateurs;
	}

	public long getIdentifiant() {
		return identifiant;
	}

	public void setIdentifiant(long identifiant) {
		this.identifiant = identifiant;
	}

	public long getIdentifiantTheme() {
		return identifiantTheme;
	}

	public void setIdentifiantTheme(long identifiantTheme) {
		this.identifiantTheme = identifiantTheme;
	}

	public int getAnnee() {
		return annee;
	}

	public void setAnnee(int annee) {
		this.annee = annee;
	}

	public String getLibelle() {
		return libelle;
	}

	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}

	public ArrayList<Indicateur> getListeIndicateurs() {
		return listeIndicateurs;
	}

	public void setListeIndicateurs(ArrayList<Indicateur> listeIndicateurs) {
		this.listeIndicateurs = listeIndicateurs;
	}

	public ArrayList<Indicateur_qualitatif> getListeIndicateursQualitatif() {
		return listeIndicateursQualitatif;
	}

	public void setListeIndicateursQualitatif(
			ArrayList<Indicateur_qualitatif> listeIndicateursQualitatif) {
		this.listeIndicateursQualitatif = listeIndicateursQualitatif;
	}

	public Theme getTem() {
		return tem;
	}

	public void setTem(Theme tem) {
		this.tem = tem;
	}

	public long getIdemplacement() {
		return idemplacement;
	}

	public void setIdemplacement(long idemplacement) {
		this.idemplacement = idemplacement;
	}

	public String getValeur() {
		return valeur;
	}

	public void setValeur(String valeur) {
		this.valeur = valeur;
	}

	public String getEmplacement() {
		return emplacement;
	}

	public void setEmplacement(String emplacement) {
		this.emplacement = emplacement;
	}

	public Administrateur getAdministrateur() {
		return administrateur;
	}

	public void setAdministrateur(Administrateur administrateur) {
		this.administrateur = administrateur;
	}

	public String getNiveau_base() {
		return niveau_base;
	}

	public void setNiveau_base(String niveau_base) {
		this.niveau_base = niveau_base;
	}

	public Boolean getType() {
		return type;
	}

	public void setType(Boolean type) {
		this.type = type;
	}

	public ArrayList<Indicateur_calcule> getListeIndicateursCalcule() {
		return listeIndicateursCalcule;
	}

	public void setListeIndicateursCalcule(
			ArrayList<Indicateur_calcule> listeIndicateursCalcule) {
		this.listeIndicateursCalcule = listeIndicateursCalcule;
	}

	public List<Emplacement> getListeEmplacments() {
		return listeEmplacments;
	}

	public void setListeEmplacments(List<Emplacement> listeEmplacments) {
		this.listeEmplacments = listeEmplacments;
	}

	public Valeur getVal() {
		return val;
	}

	public void setVal(Valeur val) {
		this.val = val;
	}

	public List<Valeur> getListeValeurs() {
		return listeValeurs;
	}

	public void setListeValeurs(List<Valeur> listeValeurs) {
		this.listeValeurs = listeValeurs;
	}

	public long getIdentifiantIndicateur() {
		return identifiantIndicateur;
	}

	public void setIdentifiantIndicateur(long identifiantIndicateur) {
		this.identifiantIndicateur = identifiantIndicateur;
	}

	public long getIdentifiantEmplacement() {
		return identifiantEmplacement;
	}

	public void setIdentifiantEmplacement(long identifiantEmplacement) {
		this.identifiantEmplacement = identifiantEmplacement;
	}

	public Annee getA() {
		return a;
	}

	public void setA(Annee a) {
		this.a = a;
	}

}
